`timescale 1ns/1ps
module tb_fifo();

reg sys_clk;
reg sys_rst_n;
reg [7:0]din = 8'b0;
wire [7:0]dout;
reg wr_en = 1'b0;
reg rd_en = 1'b0;

fifo u_fifo (
    .sys_clk(sys_clk),
    .sys_rst_n(sys_rst_n),
    .din(din),
    .wr_en(wr_en),
    .rd_en(rd_en),
    .dout(dout)
);

always #10 sys_clk = ~sys_clk;

initial begin
    sys_clk <= 1'b0;
    sys_rst_n <= 1'b0;
    #10
    sys_rst_n <= 1'b1;
    // 等30个周期fifo复位完成
    #1000
    // 写使能
    wr_en <= 1'b1;
    rd_en <= 1'b0;
    din <= 8'b0011_1010;
    #100
    din <= 8'b1110_0010;
    #100
    din <= 8'b1010_0100;
    #100
    din <= 8'b1110_0010;
    #100
    din <= 8'b1010_0100;
    #100
    din <= 8'b1110_0010;
    #100
    din <= 8'b1010_0100;
    #100
    din <= 8'b1110_0010;
    #100
    din <= 8'b1010_0100;
    #100
    din <= 8'b1110_0010;
    #100
    din <= 8'b1010_0100;
    #100
    din <= 8'b1110_0010;
    #100
    din <= 8'b1010_0100;
    #100
    din <= 8'b1110_0010;
    #100
    din <= 8'b1010_0100;
    #100
    din <= 8'b1110_0010;
    #100
    din <= 8'b1010_0100;
    #100
    din <= 8'b1110_0010;
    #100
    din <= 8'b1010_0100;
    #100
    din <= 8'b1110_0010;
    #100
    din <= 8'b1010_0100;
    #100
    din <= 8'b1110_0010;
    #100
    din <= 8'b1010_0100;
    #100
    din <= 8'b1110_0010;
    #100
    din <= 8'b1010_0100;
    #100
    din <= 8'b1110_0010;
    #100
    din <= 8'b1010_0100;
    #100
    din <= 8'b1110_0010;
    #100
    din <= 8'b1010_0100;
    #100
    din <= 8'b1110_0010;
    #100
    din <= 8'b1010_0100;
    #100
    din <= 8'b1110_0010;
    #100
    din <= 8'b1010_0100;
    #100
    din <= 8'b1110_0010;
    #100
    din <= 8'b1010_0100;
    #100
    din <= 8'b1110_0010;
    #100
    din <= 8'b1010_0100;
    #100
    din <= 8'b1110_0010;
    #100
    din <= 8'b1010_0100;
    #100
    din <= 8'b1110_0010;
    #100
    din <= 8'b1010_0100;
    #100
    din <= 8'b1110_0010;
    #100
    din <= 8'b1010_0100;
    #100
    din <= 8'b1110_0010;
    #100
    din <= 8'b1010_0100;
    #100
    din <= 8'b1110_0010;
    #100
    din <= 8'b1010_0100;
    #100
    din <= 8'b1110_0010;
    #100
    din <= 8'b1010_0100;
    #100
    din <= 8'b1110_0010;
    #100
    din <= 8'b1010_0100;
    #100
    din <= 8'b1110_0010;
    #100
    din <= 8'b1010_0100;
    #100
    din <= 8'b1110_0010;
    #100
    din <= 8'b1010_0100;
    #100
    din <= 8'b1110_0010;
    #100
    din <= 8'b1010_0100;
    #100
    din <= 8'b1110_0010;
    #100
    din <= 8'b1010_0100;
    #100
    din <= 8'b1110_0010;
    #100
    din <= 8'b1010_0100;
    #100
    din <= 8'b1110_0010;
    #100
    din <= 8'b1010_0100;
    #100
    din <= 8'b1110_0010;
    #100
    din <= 8'b1010_0100;
    #100
    din <= 8'b1110_0010;
    #100
    din <= 8'b1010_0100;

    #1000
    //读使能
    rd_en <= 1'b1;
    wr_en <= 1'b0;
    din <= 8'b0;
end

endmodule